﻿using System.Windows.Controls;
using Controllers;

namespace Views.Moduler
{
    public partial class Søgning
    {
        #region Fields

        private readonly Controller _controller; 
        private UserControl _currentControl;
        private UserControl _uc;

        #endregion

        #region Properties

        public SøgBrugere TabSøgBrugere { get; set; }
        public SøgHardware TabSøgHardware { get; set; }
        public SøgSoftware TabSøgSoftware { get; set; }
        public SøgAfdelinger TabSøgAfdelinger { get; set; }

        #endregion

        #region Creation

        public Søgning(Controller controller)
        {
            _controller = controller;
            InitializeComponent();

            // gør filen tilgængelig i XAML delen
            this.DataContext = this;

            TabSøgBrugere = new SøgBrugere(_controller);
            TabSøgHardware = new SøgHardware(_controller);
            TabSøgSoftware = new SøgSoftware(_controller);
            TabSøgAfdelinger = new SøgAfdelinger(_controller);
            
        }

        #endregion

        #region Eventhandlers

        private void SøgningTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            _uc = ((TabItem)SøgningTabControl.SelectedItem).Content as UserControl;
            OpdaterListView();
        } 

        #endregion

        #region Tilstandsstyring

        public void OpdaterSide()
        {
            if (_currentControl != null)
            {
                var søgBrugere = _currentControl as SøgBrugere;
                if (søgBrugere != null)
                {
                    TabSøgBrugere.OpdaterSide();
                }

                var søgHardware = _currentControl as SøgHardware;
                if (søgHardware != null)
                {
                    TabSøgHardware.OpdaterSide();
                }

                var søgSoftware = _currentControl as SøgSoftware;
                if (søgSoftware != null)
                {
                    TabSøgSoftware.OpdaterSide();
                }

                var søgAfdelinger = _currentControl as SøgAfdelinger;
                if (søgAfdelinger != null)
                {
                    TabSøgAfdelinger.OpdaterSide();
                }

            }
        }

        public void OpdaterListView()
        {
            if (_uc != _currentControl)
            {
                _currentControl = _uc;
                var søgBrugere = _uc as SøgBrugere;
                if (søgBrugere != null)
                {
                    TabSøgBrugere.OpdaterSide();
                }

                var søgHardware = _uc as SøgHardware;
                if (søgHardware != null)
                {
                    TabSøgHardware.OpdaterSide();
                }

                var søgSoftware = _uc as SøgSoftware;
                if (søgSoftware != null)
                {
                    TabSøgSoftware.OpdaterSide();
                }

                var søgAfdelinger = _uc as SøgAfdelinger;
                if (søgAfdelinger != null)
                {
                    TabSøgAfdelinger.OpdaterSide();
                }
            }
        } 

        #endregion
    }
}